//
//  LZFileLoader.h
//  Project
//
//  Created by liting on 2025/8/29.
//

#import <Foundation/Foundation.h>

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface LZFileLoader : NSObject

#pragma mark - 单例方法
+ (instancetype)sharedLoader;

#pragma mark - 加载JSON文件
/**
 从Main Bundle加载JSON文件

 @param fileName 文件名（不需要后缀）
 @param fileType 文件类型，默认为json
 @return 解析后的对象（NSDictionary或NSArray）
 */
- (id)loadJSONFromMainBundleWithFileName:(NSString *)fileName fileType:(NSString *_Nullable)fileType;

/**
 从Main Bundle加载JSON文件（带错误处理）

 @param fileName 文件名
 @param fileType 文件类型
 @param error 错误指针
 @return 解析后的对象
 */
- (id)loadJSONFromMainBundleWithFileName:(NSString *)fileName
                               fileType:(NSString *_Nullable)fileType
                                  error:(NSError **)error;

#pragma mark - 加载特定路径文件
/**
 从Documents目录加载JSON文件

 @param fileName 文件名
 @return 解析后的对象
 */
- (id)loadJSONFromDocumentsWithFileName:(NSString *)fileName;

/**
 从特定Bundle加载JSON文件

 @param fileName 文件名
 @param bundleName Bundle名称
 @return 解析后的对象
 */
- (id)loadJSONFromBundle:(NSString *)bundleName withFileName:(NSString *)fileName;

#pragma mark - 文件路径获取
/**
 获取Main Bundle中文件的完整路径

 @param fileName 文件名
 @param fileType 文件类型
 @return 文件路径
 */
- (NSString *)getFilePathInMainBundle:(NSString *)fileName fileType:(NSString *)fileType;

/**
 获取Documents目录路径

 @return Documents路径
 */
- (NSString *)getDocumentsDirectoryPath;

/**
 检查文件是否存在

 @param filePath 文件路径
 @return 是否存在
 */
- (BOOL)fileExistsAtPath:(NSString *)filePath;

@end

NS_ASSUME_NONNULL_END
